home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / gfx / x11 / xlincity098.lha / src / mps.cxx < prev    next >
C/C++ Source or Header  |  1997-08-26  |  32KB  |  966 lines

  1. //   mps.cxx   part of lin-city
  2. // Copyright (c) I J Peters 1995,1996.  Please read the file 'COPYRIGHT'.
  3.  
  4. extern "C" {
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #ifdef LC_X11
  9. #include <X11/Xlib.h>
  10. #include <X11/Xatom.h>
  11. #include <X11/Xutil.h>
  12. #include "lcx11.h"
  13. #else
  14. #include <vga.h>
  15. #include <vgagl.h>
  16. #include <vgamouse.h>
  17. #endif
  18. #include <math.h>
  19. #include <strings.h>
  20. #include <unistd.h>
  21.  
  22. }
  23. #include "lctypes.h"
  24. #include "lin-city.h"
  25. #include "mps.h"
  26.  
  27. void mappoint_stats(int x,int y,int button)
  28. {
  29.     static xx=0,yy=0,oldbut=0;
  30.     char s[100];
  31.     int i;
  32.  
  33.     if (x<0 || y<0)
  34.     {
  35.         x=xx;
  36.         y=yy;
  37.         button=oldbut;
  38.     }
  39.     else
  40.     {
  41.         if (mappoint_stats_flag==1 && x==xx && y==yy
  42.             && button==MOUSE_LEFTBUTTON)
  43.         {
  44.  
  45.             if (main_types[mappointtype[xx][yy]].group
  46.                 ==GROUP_MARKET)
  47.             {
  48.                 clicked_market_cb(xx,yy);
  49.                 return;
  50.             }
  51.             else if (main_types[mappointtype[xx][yy]].group
  52.                 ==GROUP_PORT)
  53.             {
  54.                 clicked_port_cb(xx,yy);
  55.                 return;
  56.             }
  57. //            else if (main_types[mappointtype[xx][yy]].group
  58. //                && mappointtype[xx][yy]==CST_ROCKET_FLOWN)
  59. //            {
  60. //                if (yn_dial_box("ROCKET LAUNCH"
  61. //        ,"You can launch the rocket now or wait until later."
  62. //        ,"If you wait, it costs you *only* money to keep the"
  63. //        ,"rocket ready.    Launch?")!=0)
  64. //                    launch_rocket(xx,yy);
  65. //                else
  66. //                    return;
  67. //            }
  68.         }
  69.         xx=x;
  70.         yy=y;
  71.         oldbut=button;
  72.         mappoint_stats_flag=1;
  73. // draw centre of box
  74.         Fgl_fillbox(MAPPOINT_STATS_X,MAPPOINT_STATS_Y
  75.             ,MAPPOINT_STATS_W+1,MAPPOINT_STATS_H+1,14);
  76. // write static stuff
  77. #ifdef USE_EXPANDED_FONT
  78.         gl_setwritemode(WRITEMODE_MASKED | FONT_EXPANDED);
  79. #else
  80.         Fgl_setfontcolors(14,TEXT_FG_COLOUR);
  81. #endif
  82.         strcpy(s,type_string[main_types[mappointtype[x][y]].group]);
  83.         Fgl_write(MAPPOINT_STATS_X+(14-strlen(s))*4
  84.             ,MAPPOINT_STATS_Y,s);
  85.  
  86.         if (button==MOUSE_RIGHTBUTTON)
  87.             mps_right_setup();
  88.         else switch(main_types[mappointtype[x][y]].group)
  89.         {
  90.             case (GROUP_RESIDENCE): mps_res_setup(); break;
  91.             case (GROUP_ROAD):      mps_transport_setup(); break;
  92.             case (GROUP_RAIL):      mps_transport_setup(); break;
  93.             case (GROUP_TRACK):     mps_transport_setup(); break;
  94.             case (GROUP_ORGANIC_FARM): mps_farm_setup(); break;
  95.             case (GROUP_MARKET):    mps_market_setup(); break;
  96.             case (GROUP_INDUSTRY_L):   mps_indl_setup(); break;
  97.             case (GROUP_INDUSTRY_H):   mps_indh_setup(); break;
  98.             case (GROUP_COALMINE): mps_coalmine_setup(); break;
  99.             case (GROUP_POWER_SOURCE_COAL):
  100.                 mps_power_source_coal_setup(); break;
  101.             case (GROUP_POWER_SOURCE):
  102.                 mps_power_source_setup(); break;
  103.             case (GROUP_UNIVERSITY): 
  104.                 mps_university_setup(); break;
  105.             case (GROUP_OREMINE): mps_oremine_setup(); break;
  106.             case (GROUP_RECYCLE): mps_recycle_setup(); break; 
  107.             case (GROUP_SUBSTATION): 
  108.                 mps_substation_setup(); break;
  109.             case (GROUP_ROCKET): mps_rocket_setup(); break;
  110.             case (GROUP_WINDMILL):
  111.                 mps_windmill_setup(); break;
  112.             case (GROUP_MONUMENT):
  113.                 mps_monument_setup(); break;
  114.             case (GROUP_SCHOOL): mps_school_setup(); break;
  115.             case (GROUP_BLACKSMITH):
  116.                 mps_blacksmith_setup(); break;
  117.             case (GROUP_MILL): mps_mill_setup(); break;
  118.             case (GROUP_POTTERY):
  119.                 mps_pottery_setup(); break;
  120.             case (GROUP_PORT):
  121.                 mps_port_setup(); break;
  122.             case (GROUP_TIP):
  123.                 mps_tip_setup(); break;
  124.             case (GROUP_COMMUNE):
  125.                 mps_commune_setup(); break;
  126.             case (GROUP_FIRESTATION):
  127.                 mps_firestation_setup(); break;
  128.             case (GROUP_CRICKET):
  129.                 mps_cricket_setup(); break;
  130.             case (GROUP_HEALTH):
  131.                 mps_health_setup(); break;
  132.         }
  133.     }
  134. #ifdef USE_EXPANDED_FONT
  135.         Fgl_fillbox(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+8
  136.                 ,MAPPOINT_STATS_W-7*8,MAPPOINT_STATS_H-8,14);
  137.         gl_setwritemode(WRITEMODE_MASKED | FONT_EXPANDED);
  138. #else
  139.     Fgl_setfontcolors(14,TEXT_FG_COLOUR);
  140. #endif
  141.     if (button==MOUSE_RIGHTBUTTON)
  142.         mps_right(x,y);
  143.         else switch(main_types[mappointtype[x][y]].group)
  144.         {
  145.                 case (GROUP_RESIDENCE):    mps_res(x,y); break;
  146.                 case (GROUP_ROAD):         mps_road(x,y); break;
  147.                 case (GROUP_RAIL):         mps_rail(x,y); break;
  148.                 case (GROUP_TRACK):        mps_track(x,y); break;
  149.                 case (GROUP_ORGANIC_FARM): mps_farm(x,y); break;
  150.         case (GROUP_MARKET):       mps_market(x,y); break;
  151.         case (GROUP_INDUSTRY_L):   mps_indl(x,y); break;
  152.         case (GROUP_INDUSTRY_H):   mps_indh(x,y); break;
  153.         case (GROUP_COALMINE):     mps_coalmine(x,y); break;
  154.         case (GROUP_POWER_SOURCE_COAL):
  155.             mps_power_source_coal(x,y); break;
  156.         case (GROUP_POWER_SOURCE): mps_power_source(x,y); break;
  157.         case (GROUP_UNIVERSITY):   mps_university(x,y); break;
  158.         case (GROUP_OREMINE):      mps_oremine(x,y); break;
  159.         case (GROUP_RECYCLE):      mps_recycle(x,y); break;
  160.         case (GROUP_SUBSTATION):   mps_substation(x,y); break;
  161.         case (GROUP_ROCKET):       mps_rocket(x,y); break;
  162.         case (GROUP_WINDMILL):     mps_windmill(x,y); break;
  163.         case (GROUP_MONUMENT):     mps_monument(x,y); break;
  164.         case (GROUP_SCHOOL):       mps_school(x,y); break;
  165.         case (GROUP_BLACKSMITH):   mps_blacksmith(x,y); break;
  166.         case (GROUP_MILL):         mps_mill(x,y); break;
  167.         case (GROUP_POTTERY):      mps_pottery(x,y); break;
  168.         case (GROUP_WATER):        mps_water(x,y);   break;
  169.         case (GROUP_PORT):         mps_port(x,y); break;
  170.         case (GROUP_TIP):          mps_tip(x,y); break;
  171.         case (GROUP_COMMUNE):      mps_commune(x,y); break;
  172.         case (GROUP_FIRESTATION):  mps_firestation(x,y); break;
  173.         case (GROUP_CRICKET):      mps_cricket(x,y); break;
  174.         case (GROUP_HEALTH):       mps_health(x,y); break;
  175.         }
  176.  
  177. #ifdef USE_EXPANDED_FONT
  178.     gl_setwritemode(WRITEMODE_OVERWRITE | FONT_EXPANDED);
  179. #else
  180.     Fgl_setfontcolors(TEXT_BG_COLOUR,TEXT_FG_COLOUR);
  181. #endif
  182. }
  183.  
  184. void mps_res_setup(void)
  185. {
  186.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+8,"People");
  187.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+16,"Power");
  188.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+24,"Fed");
  189.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+32,"Empld");
  190.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"H cov");
  191.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"F cov");
  192.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"C cov");
  193.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Poll'n");
  194.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+80,"Job pros");
  195. }
  196.  
  197. void mps_res(int x,int y)
  198. {
  199.     char s[100];
  200.         sprintf(s,"%d ",mappoint[x][y].population);
  201.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+8,s);
  202.         if ((mappoint[x][y].flags & FLAG_POWERED)!=0)
  203.                 strcpy(s,"YES");
  204.         else
  205.                 strcpy(s,"NO ");
  206.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+16,s);
  207.  
  208.         if ((mappoint[x][y].flags & FLAG_FED)!=0)
  209.                 strcpy(s,"YES");
  210.         else
  211.                 strcpy(s,"NO ");
  212.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+24,s);
  213.  
  214.         if ((mappoint[x][y].flags & FLAG_EMPLOYED)!=0)
  215.                 strcpy(s,"YES");
  216.         else
  217.                 strcpy(s,"NO ");
  218.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+32,s);
  219.  
  220.         if ((mappoint[x][y].flags & FLAG_HEALTH_COVER)!=0)
  221.                 strcpy(s,"YES");
  222.         else
  223.                 strcpy(s,"NO ");
  224.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+40,s);
  225.  
  226.         if ((mappoint[x][y].flags & FLAG_FIRE_COVER)!=0)
  227.                 strcpy(s,"YES");
  228.         else
  229.                 strcpy(s,"NO ");
  230.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+48,s);
  231.  
  232.         if ((mappoint[x][y].flags & FLAG_CRICKET_COVER)!=0)
  233.                 strcpy(s,"YES");
  234.         else
  235.                 strcpy(s,"NO ");
  236.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+56,s);
  237.  
  238. // pollution
  239.         sprintf(s,"%7d",mappointpol[x][y]);
  240.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+64,s);
  241.  
  242. // job prospects
  243.         sprintf(s,"%7d",mappoint[x][y].int_1);
  244.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+80,s);
  245. }
  246.  
  247. void mps_transport_setup(void)
  248. {
  249.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+32,"Food");
  250.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  251.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Coal");
  252.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Goods");
  253.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Ore");
  254.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+72,"Steel");
  255.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+80,"Waste");
  256. }
  257.  
  258. void mps_road(int x,int y)
  259. {
  260.     char s[100];
  261.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100.0
  262.         /MAX_FOOD_ON_ROAD);
  263.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,s);
  264.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100.0
  265.         /MAX_JOBS_ON_ROAD);
  266.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  267.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100.0
  268.         /MAX_COAL_ON_ROAD);
  269.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  270.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100.0
  271.         /MAX_GOODS_ON_ROAD);
  272.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  273.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_5*100.0
  274.         /MAX_ORE_ON_ROAD);
  275.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  276.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_6*100
  277.         /MAX_STEEL_ON_ROAD);
  278.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+72,s);
  279.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_7*100
  280.                 /MAX_WASTE_ON_ROAD);
  281.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  282.  
  283. }
  284.  
  285. void mps_rail(int x,int y)
  286. {
  287.         char s[100];
  288.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100.0
  289.                 /MAX_FOOD_ON_RAIL);
  290.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,s);
  291.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100.0
  292.                 /MAX_JOBS_ON_RAIL);
  293.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  294.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100.0
  295.                 /MAX_COAL_ON_RAIL);
  296.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  297.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100.0
  298.                 /MAX_GOODS_ON_RAIL);
  299.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  300.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_5*100.0
  301.                 /MAX_ORE_ON_RAIL);
  302.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  303.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_6*100
  304.                 /MAX_STEEL_ON_RAIL);
  305.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+72,s);
  306.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_7*100
  307.                 /MAX_WASTE_ON_RAIL);
  308.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  309.  
  310. }
  311.  
  312. void mps_track(int x,int y)
  313. {
  314.         char s[100];
  315.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100.0
  316.                 /MAX_FOOD_ON_TRACK);
  317.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,s);
  318.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100.0
  319.                 /MAX_JOBS_ON_TRACK);
  320.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  321.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100.0
  322.                 /MAX_COAL_ON_TRACK);
  323.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  324.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100.0
  325.                 /MAX_GOODS_ON_TRACK);
  326.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  327.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_5*100.0
  328.                 /MAX_ORE_ON_TRACK);
  329.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  330.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_6*100
  331.                 /MAX_STEEL_ON_TRACK);
  332.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+72,s);
  333.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_7*100
  334.                 /MAX_WASTE_ON_TRACK);
  335.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  336.  
  337. }
  338.  
  339. void mps_market_setup(void)
  340. {
  341.     mps_transport_setup();
  342. // put flags in
  343. }
  344.  
  345. void mps_market(int x,int y)
  346. {
  347.         char s[100];
  348.     float f;
  349.     f=(float)mappoint[x][y].int_1*100.0/MAX_FOOD_IN_MARKET;
  350.     if (f>100.0)
  351.         f=100.0;
  352.         sprintf(s,"%5.1f%%",f);
  353.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,s);
  354.     f=(float)mappoint[x][y].int_2*100.0/MAX_JOBS_IN_MARKET;
  355.     if (f>100.0)
  356.         f=100.0;
  357.         sprintf(s,"%5.1f%%",f);
  358.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  359.     f=(float)mappoint[x][y].int_3*100.0/MAX_COAL_IN_MARKET;
  360.     if (f>100.0)
  361.         f=100.0;
  362.         sprintf(s,"%5.1f%%",f);
  363.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  364.     f=(float)mappoint[x][y].int_4*100.0/MAX_GOODS_IN_MARKET;
  365.     if (f>100.0)
  366.         f=100.0;
  367.         sprintf(s,"%5.1f%%",f);
  368.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  369.     f=(float)mappoint[x][y].int_5*100.0/MAX_ORE_IN_MARKET;
  370.     if (f>100.0)
  371.         f=100.0;
  372.         sprintf(s,"%5.1f%%",f);
  373.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  374.     f=(float)mappoint[x][y].int_6*100/MAX_STEEL_IN_MARKET;
  375.     if (f>100.0)
  376.         f=100.0;
  377.         sprintf(s,"%5.1f%%",f);
  378.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+72,s);
  379.         f=(float)mappoint[x][y].int_7*100/MAX_WASTE_IN_MARKET;
  380.         if (f>100.0)
  381.                 f=100.0;
  382.         sprintf(s,"%5.1f%%",f);
  383.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  384.  
  385. }
  386.  
  387.  
  388.  
  389. void mps_farm_setup(void)
  390. {
  391.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+16,"Power");
  392.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Tech");
  393.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Prod");
  394. }
  395.  
  396. void mps_farm(int x,int y)
  397. {
  398.     char s[100];
  399.         if ((mappoint[x][y].flags & FLAG_POWERED)!=0)
  400.                 strcpy(s,"YES");
  401.         else
  402.                 strcpy(s,"NO ");
  403.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+16,s);
  404.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100.0
  405.         /MAX_TECH_LEVEL);
  406.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  407.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100.0
  408.                 /1200.0);
  409.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  410.  
  411. }
  412.  
  413. void mps_indl_setup(void)
  414. {
  415.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+16,"Power");
  416.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Output");
  417.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Store");
  418.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Ore");
  419.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Steel");
  420.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+80,"Capacity");
  421. }
  422.  
  423. void mps_indl(int x,int y)
  424. {
  425.     char s[100];
  426.     float f;
  427.         if ((mappoint[x][y].flags & FLAG_POWERED)!=0)
  428.                 strcpy(s,"YES");
  429.         else
  430.                 strcpy(s,"NO ");
  431.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+16,s);
  432.         sprintf(s,"%7d",mappoint[x][y].int_1);
  433.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+40,s);
  434.     f=(float)mappoint[x][y].int_2*100.0/MAX_GOODS_AT_INDUSTRY_L;
  435.     if (f>100.0)
  436.         f=100.0;
  437.         sprintf(s,"%3.1f%%",f);
  438.         Fgl_write(MAPPOINT_STATS_X+9*8,MAPPOINT_STATS_Y+48,s);
  439.     f=(float)mappoint[x][y].int_3*100.0/MAX_ORE_AT_INDUSTRY_L;
  440.     if (f>100.0)
  441.         f=100.0;
  442.         sprintf(s,"%3.1f%%",f);
  443.         Fgl_write(MAPPOINT_STATS_X+9*8,MAPPOINT_STATS_Y+56,s);
  444.     f=(float)mappoint[x][y].int_4*100.0/MAX_STEEL_AT_INDUSTRY_L;
  445.     if (f>100.0)
  446.         f=100.0;
  447.         sprintf(s,"%3.1f%%",f);
  448.         Fgl_write(MAPPOINT_STATS_X+9*8,MAPPOINT_STATS_Y+64,s);
  449.         sprintf(s,"%4d%%",mappoint[x][y].int_6);
  450.         Fgl_write(MAPPOINT_STATS_X+9*8,MAPPOINT_STATS_Y+80,s);
  451.  
  452. }
  453.  
  454. void mps_indh_setup(void)
  455. {
  456.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+16,"Power");
  457.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Output");
  458.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Store");
  459.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Ore");
  460.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Coal");
  461.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+80,"Capacity");
  462. }
  463.  
  464. void mps_indh(int x,int y)
  465. {
  466.         char s[100];
  467.     float f;
  468.         if ((mappoint[x][y].flags & FLAG_POWERED)!=0)
  469.                 strcpy(s,"YES");
  470.         else
  471.                 strcpy(s,"NO ");
  472.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+16,s);
  473.         sprintf(s,"%7d",mappoint[x][y].int_1);
  474.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+40,s);
  475.     f=(float)mappoint[x][y].int_2*100.0/MAX_STEEL_AT_INDUSTRY_H;
  476.     if (f>100.0)
  477.         f=100.0;
  478.         sprintf(s,"%5.1f%%",f);
  479.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  480.     f=(float)mappoint[x][y].int_3*100.0/MAX_ORE_AT_INDUSTRY_H;
  481.     if (f>100.0)
  482.         f=100.0;
  483.         sprintf(s,"%5.1f%%",f);
  484.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  485.     f=(float)mappoint[x][y].int_4*100.0/MAX_COAL_AT_INDUSTRY_H;
  486.     if (f>100.0)
  487.         f=100.0;
  488.         sprintf(s,"%5.1f%%",f);
  489.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  490.         sprintf(s,"%4d%%",mappoint[x][y].int_5);
  491.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  492. }
  493.  
  494. void mps_coalmine_setup(void)
  495. {
  496.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Stock");
  497.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Reserve");
  498. }
  499.  
  500. void mps_coalmine(int x,int y)
  501. {
  502.     char s[100];
  503.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  504.         /MAX_COAL_AT_MINE);
  505.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  506.     if (mappoint[x][y].int_2>0)
  507.             sprintf(s,"%7d",mappoint[x][y].int_2);
  508.     else
  509.         sprintf(s," EMPTY ");
  510.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+48,s);    
  511. }
  512.  
  513. void mps_power_source_coal_setup(void)
  514. {
  515.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Cycle");
  516.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Stock");
  517.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Tech");
  518. }
  519.  
  520. void mps_power_source_coal(int x,int y)
  521. {
  522.     char s[100];
  523.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  524.         /POWER_LINE_CAPACITY);
  525.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  526.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  527.         /MAX_COAL_AT_POWER_STATION);
  528.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  529. // tech level is int_4
  530.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100
  531.         /MAX_TECH_LEVEL);
  532.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  533. }
  534.  
  535. void mps_power_source_setup(void)
  536. {
  537.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Cycle");
  538.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Tech");
  539. }
  540.  
  541. void mps_power_source(int x,int y)
  542. {
  543.     char s[100];
  544.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  545.         /POWER_LINE_CAPACITY);
  546.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  547.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  548.         /MAX_TECH_LEVEL);
  549.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  550. }
  551.     
  552. void mps_university_setup(void)
  553. {
  554.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Academ's");
  555.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  556.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Phds");
  557.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Capacity");
  558. }
  559.  
  560. void mps_university(int x,int y)
  561. {
  562.     char s[100];
  563.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  564.         /UNIVERSITY_JOBS_STORE);
  565.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  566.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  567.         /UNIVERSITY_GOODS_STORE);
  568.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  569.     sprintf(s,"%7d",mappoint[x][y].int_3);
  570.     Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+56,s);
  571.     sprintf(s,"%4d%%",mappoint[x][y].int_5);
  572.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  573. }
  574.  
  575. void mps_recycle_setup(void)
  576. {
  577.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"O stock");
  578.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"W store");
  579.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"S store");
  580.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Tech");
  581.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+80,"Capacity");
  582. }
  583.  
  584. void mps_recycle(int x,int y)
  585. {
  586.     char s[100];
  587.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  588.         /MAX_ORE_AT_RECYCLE);
  589.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  590.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  591.         /MAX_WASTE_AT_RECYCLE);
  592.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  593.     Fgl_write(MAPPOINT_STATS_X+9*8,MAPPOINT_STATS_Y+56,"-");
  594.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100
  595.         /MAX_TECH_LEVEL);
  596.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  597.         sprintf(s,"%4d%%",mappoint[x][y].int_6);
  598.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+80,s);
  599. }
  600.  
  601. void mps_oremine_setup(void)
  602. {
  603.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Stock");
  604.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Reserve");
  605. }
  606.  
  607. void mps_oremine(int x,int y)
  608. {
  609.     char s[100];
  610.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  611.         /DIG_MORE_ORE_TRIGGER);
  612.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  613.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  614.         /(ORE_RESERVE*16));
  615.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  616. }
  617.  
  618. void mps_substation_setup(void)
  619. {
  620.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Power");
  621.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Tech");
  622. }
  623.  
  624. void mps_substation(int x,int y)
  625. {
  626.     char s[100];
  627.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  628.         /POWER_LINE_CAPACITY);
  629.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  630.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  631.         /MAX_TECH_LEVEL);
  632.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  633. }
  634.  
  635. void mps_rocket_setup(void)
  636. {
  637.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  638.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  639.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Steel");
  640.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Launch");
  641. }
  642.  
  643. void mps_rocket(int x,int y)
  644. {
  645.     char s[100];
  646.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  647.         /ROCKET_PAD_JOBS_STORE);
  648.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  649.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  650.         /ROCKET_PAD_GOODS_STORE);
  651.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  652.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100
  653.         /ROCKET_PAD_STEEL_STORE);
  654.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  655.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_4*100
  656.         /ROCKET_PAD_LAUNCH);
  657.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  658.     if (mappointtype[x][y]==CST_ROCKET_5)
  659.     {
  660.                 if (yn_dial_box("ROCKET LAUNCH"
  661.                 ,"You can launch the rocket now or wait until later."
  662.                 ,"If you wait, it costs you *only* money to keep the"
  663.                 ,"rocket ready.    Launch?")!=0)
  664.                         launch_rocket(x,y);
  665.     }
  666. }
  667.  
  668. void mps_windmill_setup(void)
  669. {
  670.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Power");
  671.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Tech");
  672. }
  673.  
  674. void mps_windmill(int x,int y)
  675. {
  676.     char s[100];
  677.     sprintf(s,"%7d",mappoint[x][y].int_1);
  678.     Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+40,s);
  679.     sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  680.         /MAX_TECH_LEVEL);
  681.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  682. }
  683.  
  684. void mps_monument_setup(void)
  685. {
  686.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Built");
  687.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"T made");
  688. }
  689.  
  690.  
  691. void mps_monument(int x,int y)
  692. {
  693.         char s[100];
  694.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  695.         /BUILD_MONUMENT_JOBS);
  696.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  697.         sprintf(s,"%5.1f%",(float)mappoint[x][y].int_2*100
  698.                 /MAX_TECH_LEVEL);
  699.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  700. }
  701.  
  702. void mps_school_setup(void)
  703. {
  704.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  705.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  706.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"T made");
  707.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Capacity");
  708. }
  709.  
  710. void mps_school(int x,int y)
  711. {
  712.         char s[100];
  713.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  714.                 /MAX_JOBS_AT_SCHOOL);
  715.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+40,s);
  716.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  717.                 /MAX_GOODS_AT_SCHOOL);
  718.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  719.         sprintf(s,"%5.1f%",(float)mappoint[x][y].int_3*100
  720.                 /MAX_TECH_LEVEL);
  721.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  722.         sprintf(s,"%5d%%",mappoint[x][y].int_5*4);
  723.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  724.  
  725. }
  726.  
  727. void mps_blacksmith_setup(void)
  728. {
  729.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"G store");
  730.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"C store");
  731.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"Capacity");
  732. }
  733.  
  734. void mps_blacksmith(int x,int y)
  735. {
  736.         char s[100];
  737.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  738.                 /MAX_GOODS_AT_BLACKSMITH);
  739.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  740.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100
  741.                 /MAX_COAL_AT_BLACKSMITH);
  742.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  743.     sprintf(s,"%5d%%",mappoint[x][y].int_6);
  744.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  745. }
  746.  
  747. void mps_mill_setup(void)
  748. {
  749.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"G store");
  750.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Capacity");
  751. }
  752.  
  753. void mps_mill(int x,int y)
  754. {
  755.         char s[100];
  756.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  757.                 /MAX_GOODS_AT_MILL);
  758.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  759.     sprintf(s,"%5d%%",mappoint[x][y].int_6);
  760.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  761. }
  762.  
  763. void mps_pottery_setup(void)
  764. {
  765.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"G store");
  766.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"O store");
  767.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"C store");
  768.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"Capacity");
  769. }
  770.  
  771. void mps_pottery(int x,int y)
  772. {
  773.         char s[100];
  774.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  775.                 /MAX_GOODS_AT_POTTERY);
  776.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  777.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  778.                 /MAX_ORE_AT_POTTERY);
  779.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  780.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_3*100
  781.                 /MAX_ORE_AT_POTTERY);
  782.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+56,s);
  783.     sprintf(s,"%5d%%",mappoint[x][y].int_6);
  784.     Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+64,s);
  785. }
  786.  
  787. void mps_water(int x,int y)
  788. {
  789.     if (mappoint[x][y].flags & FLAG_IS_RIVER)
  790.         Fgl_write(MAPPOINT_STATS_X+1*8,MAPPOINT_STATS_Y+40
  791.             ,"  CONNECTED  ");
  792.     else
  793.         Fgl_write(MAPPOINT_STATS_X+1*8,MAPPOINT_STATS_Y+40
  794.             ,"NOT CONNECTED");
  795.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"to river sytem");
  796. }
  797.  
  798. void mps_port_setup(void)
  799. {
  800.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+12,"  Values for");
  801.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+20,"  last month");
  802.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+32,"Import=");
  803.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Export=");
  804.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+68,"Click again");
  805.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+76,"for controls");
  806. }
  807.  
  808. void mps_port(int x,int y)
  809. {
  810.         char s[100];
  811.         sprintf(s,"%7d.%02d",mappoint[x][y].int_5/100
  812.                                 ,mappoint[x][y].int_5%100);
  813.         Fgl_write(MAPPOINT_STATS_X+3*8,MAPPOINT_STATS_Y+40,s);
  814.         sprintf(s,"%7d.%02d",mappoint[x][y].int_2/100
  815.                                 ,mappoint[x][y].int_2%100);
  816.         Fgl_write(MAPPOINT_STATS_X+3*8,MAPPOINT_STATS_Y+56,s);
  817. }
  818.  
  819. void mps_tip_setup(void)
  820. {
  821.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+32,"  Waste stored");
  822.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"   last month");
  823.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+64,"       % full");
  824. }
  825.  
  826. void mps_tip(int x,int y)
  827. {
  828.     char s[100];
  829.     sprintf(s,"%7d",mappoint[x][y].int_3);
  830.     Fgl_write(MAPPOINT_STATS_X+3*8,MAPPOINT_STATS_Y+52,s);
  831.     sprintf(s,"%4.1f",(float)(mappoint[x][y].int_1*100)
  832.         /(float)MAX_WASTE_AT_TIP);
  833.     Fgl_write(MAPPOINT_STATS_X+3*8,MAPPOINT_STATS_Y+64,s);
  834. }
  835.  
  836. void mps_commune_setup(void)
  837. {
  838.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+12,"   Activity");
  839.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+20,"  last month");
  840.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+36,"  Coal");
  841.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+44,"   Ore");
  842.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+52," Steel");
  843.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+60," Waste");
  844. }
  845.  
  846. void mps_commune(int x,int y)
  847. {
  848.         char s[100];
  849.         if ((mappoint[x][y].int_5 & 1)!=0)
  850.             Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+36,"YES");
  851.     else
  852.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+36,"NO ");
  853.     if ((mappoint[x][y].int_5 & 2)!=0)
  854.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+44,"YES");
  855.     else
  856.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+44,"NO ");
  857.     if ((mappoint[x][y].int_5 & 4)!=0)
  858.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+52,"YES");
  859.     else
  860.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+52,"NO ");
  861.     if ((mappoint[x][y].int_5 & 8)!=0)
  862.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+60,"YES");
  863.     else
  864.         Fgl_write(MAPPOINT_STATS_X+7*8,MAPPOINT_STATS_Y+60,"NO ");
  865. }
  866.  
  867.  
  868. void mps_right_setup(void)
  869. {
  870.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+8,"  Fire cover");
  871.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+24," Health cover");
  872.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Cricket cover");
  873.     Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+56,"  Pollution");
  874. }
  875.  
  876. void mps_right(int x,int y)
  877. {
  878.     char s[100];
  879.     if ((mappoint[x][y].flags & FLAG_FIRE_COVER)!=0)
  880.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+16,"YES");
  881.     else
  882.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+16,"NO ");
  883.     if ((mappoint[x][y].flags & FLAG_HEALTH_COVER)!=0)
  884.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,"YES");
  885.     else
  886.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+32,"NO ");
  887.         if ((mappoint[x][y].flags & FLAG_CRICKET_COVER)!=0)
  888.                 Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,"YES");
  889.         else
  890.                 Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,"NO ");
  891.     sprintf(s,"%5d ",mappointpol[x][y]);
  892.     if (mappointpol[x][y]<10)
  893.         strcat(s,"(clear) ");
  894.         else if (mappointpol[x][y]<25)
  895.                 strcat(s,"(good)  ");
  896.         else if (mappointpol[x][y]<70)
  897.                 strcat(s,"(fair)  ");
  898.         else if (mappointpol[x][y]<190)
  899.                 strcat(s,"(smelly)");
  900.         else if (mappointpol[x][y]<450)
  901.                 strcat(s,"(smokey)");
  902.         else if (mappointpol[x][y]<1000)
  903.                 strcat(s,"(smoggy)");
  904.         else if (mappointpol[x][y]<1700)
  905.                 strcat(s,"(bad)   ");
  906.         else if (mappointpol[x][y]<3000)
  907.                 strcat(s,"(v bad) ");
  908.         else
  909.                 strcat(s,"(death!)");
  910.     Fgl_write(MAPPOINT_STATS_X+8,MAPPOINT_STATS_Y+64,s);
  911. }
  912.  
  913. void mps_firestation_setup(void)
  914. {
  915.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  916.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  917. }
  918.  
  919. void mps_firestation(int x,int y)
  920. {
  921.         char s[100];
  922.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  923.                 /MAX_JOBS_AT_FIRESTATION);
  924.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  925.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  926.                 /MAX_GOODS_AT_FIRESTATION);
  927.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  928.  
  929. }
  930.  
  931. void mps_cricket_setup(void)
  932. {
  933.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  934.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  935. }
  936.  
  937. void mps_cricket(int x,int y)
  938. {
  939.         char s[100];
  940.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  941.                 /MAX_JOBS_AT_FIRESTATION);
  942.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  943.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  944.                 /MAX_GOODS_AT_FIRESTATION);
  945.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  946.  
  947. }
  948.  
  949. void mps_health_setup(void)
  950. {
  951.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+40,"Jobs");
  952.         Fgl_write(MAPPOINT_STATS_X,MAPPOINT_STATS_Y+48,"Goods");
  953. }
  954.  
  955. void mps_health(int x,int y)
  956. {
  957.         char s[100];
  958.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_1*100
  959.                 /MAX_JOBS_AT_HEALTH_CENTRE);
  960.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+40,s);
  961.         sprintf(s,"%5.1f%%",(float)mappoint[x][y].int_2*100
  962.                 /MAX_GOODS_AT_HEALTH_CENTRE);
  963.         Fgl_write(MAPPOINT_STATS_X+8*8,MAPPOINT_STATS_Y+48,s);
  964.  
  965. }
  966.